前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

img

本节主要讲头部 + 页面布局,讲解添加头部标题栏基础功能。

# 头部 + 页面布局

从实战开发开始的两个页面都没有添加头部标题栏,只是把标题栏进行了取消。在项目的根目录下的 pages.json 文件,设置 app-plus 的 titleNView 为 false 即可;

/* pages.json */
{
	"path": "pages/mine/index",
	"style": {
		"navigationBarTitleText": "我的",
		"app-plus":{
			"titleNView": false
		}
	}
},
@前端进阶之旅: 代码已经复制到剪贴板

视频页实际头部效果:

image-20210215154648264

这个页面的标题栏开发会相对容易一些,因此拿到这里来讲开发导航栏。

由于 h5 是运行在浏览器中的,我们并不能对标题栏进行样式设置,故在差异化下,H5 没有应用头部。但是在 app 我们是可以设置标题栏的,新版的小程序也开始支持标题栏的设置。我们的 Uniapp 项目并不是操作原生 app 组件,因此标题栏的设置可以说是 webview 的一个样式模拟。取消标题栏的是以手机状态栏(电池栏)开始自上而下排版的,这一块我们也要隔开。

看到开头的大图,图片上画的两个很明显的边框分为两块,头部与内容区。要想更接近 app 的原生效果,就要看页面的组成。我们在写页面的时候可以把导航栏固定,然后内容区用 scroll-view 组件撑开整个页面:

<view>
	<view class="navbar">
		<!-- 这里是标题栏 -->
	</view>
	<scroll-view scroll-y="true" class="page-content">
		这里是内容区
	</scroll-view>
</view>
.navbar{
	position: fixed;
	top:0;
	width:100%;
	height:44px;
}
.page-content {
	position: fixed;
	top: 44px;   // 距离标题栏高度
	left: 0;
	right: 0;
	bottom: 0px;
}
@前端进阶之旅: 代码已经复制到剪贴板

这样就可以实现基本的页面布局,内容区铺满整个页面(除标题栏外和底部导航)。

在这里我们可以使用 Uniapp 官方的扩展组件 NavBar 导航栏。可以友好的处理左右边的事件,甚至可以以插槽的方式自定义功能复杂的标题栏。因此可以改造代码:

<view>
	<!-- #ifdef APP-PLUS || MP-WEIXIN -->
	<uni-nav-bar fixed :status-bar="true" title="我的音乐" @clickLeft="goCloud" @clickRight="goCloud">
		<block slot="left"><image class="top-img left" src="/static/image/mine/l.png"></image></block>
		<!-- #ifdef APP-PLUS -->
		<block slot="right"><image class="top-img" src="/static/image/mine/r.png"></image></block>
		<!-- #endif -->
	</uni-nav-bar>
	<!-- #endif -->
	<!-- #ifdef APP-PLUS || MP-WEIXIN -->
	<scroll-view scroll-y="true" class="page-content">
	<!-- #endif -->
		这里是内容区
	<!-- #ifdef APP-PLUS || MP-WEIXIN -->
	</scroll-view>
	<!-- #endif -->
</view>
@前端进阶之旅: 代码已经复制到剪贴板

固定导航栏在 uni-nav-bar 组件中添加 fixed,添加 :status-bar="true" 适配状态栏的高度下渲染,并添加左右触发事件回调。由于这一块仅在 app 中需要设置标题栏,因此代码进行了条件编译 <!-- #ifdef APP-PLUS -->。

添加完头部标题栏的 APP 页面效果图:

image-20210215154702414

添加完头部标题栏的微信小程序页面效果图:

image-20210215154712259

小程序的载体是运营方 app,会有运营方的设计差异在。因此在设计整个项目之初,哪些功能是否适用的,是否可以在这个端使用的,都要做出评估。功能设计上也要有所取舍。如果产品经理设计一个功能需要在 H5 中调用用户的通讯录,就算程序员再优秀或者框架再实用,H5 也是做不到的调用通讯录的。开发之前要考虑他们所提供的 API 和性能能否满足产品需求。

fe

基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏